package fem2;

import fem2.enu.MassMatrixType;
import inf.jlinalg.IMatrix;

/**
 * Abstract class for assembler job
 * 
 * @author hbui
 * 
 */
public abstract class Assembler {

	private Model m;

	public Assembler(Model m) {
		this.m = m;
	}

	/**
	 * 
	 * @return the model
	 */
	protected Model getModel() {
		return m;
	}

	/**
	 * assemble tangent stiffness matrix
	 * 
	 * @param kt
	 */
	public abstract void assembleKt(IMatrix kt);

	/**
	 * assemble internal force vector
	 * 
	 * @param ri
	 */
	public abstract void assembleRi(double[] ri);

	/**
	 * assemble mass matrix
	 * 
	 * @param m
	 */
	public abstract void assembleM(IMatrix m, MassMatrixType massType);
}
